home *** CD-ROM | disk | FTP | other *** search
/ NeXTSTEP 3.1 (Developer) [x86] / NeXT Step 3.1 Intel dev.cdr.dmg / NextDeveloper / Examples / AppKit / ScrollDoodScroll / RulerView.m < prev    next >
Text File  |  1992-05-28  |  1KB  |  50 lines

  1. // RulerView.m
  2. // By Jayson Adams, NeXT Developer Support Team
  3. // Modified for 3.0 by Ali Ozer, May '92
  4. // You may freely copy, distribute and reuse the code in this example.
  5. // NeXT disclaims any warranty of any kind, expressed or implied, as to its
  6. // fitness for any particular use.
  7.  
  8. #import <dpsclient/psops.h>
  9. #import <math.h>
  10.  
  11. #import "RulerView.h"
  12.  
  13. @implementation RulerView
  14.  
  15. #define INCH_MARK_LENGTH (NX_HEIGHT(&bounds) * 0.75)
  16. #define HALFINCH_MARK_LENGTH (NX_HEIGHT(&bounds) * 0.5)
  17. #define QUARTERINCH_MARK_LENGTH (NX_HEIGHT(&bounds) * 0.25)
  18.  
  19. - drawSelf:(const NXRect *)rects :(int)rectCount
  20. {
  21.     NXCoord start = floor(NX_X(rects) / 72.0) * 72.0;
  22.     NXCoord end = ceil(NX_MAXX(rects) / 72.0) * 72.0;
  23.  
  24.     PSsetgray (NX_LTGRAY);
  25.     NXRectFill (rects);
  26.     
  27.     PSmoveto (start, 1.0);
  28.     PSlineto (end, 1.0);
  29.     while (start <= end) {
  30.         // Userpaths would really help out here. Exercise for the reader...
  31.     PSmoveto (start, 0.0);
  32.     PSrlineto (0.0, INCH_MARK_LENGTH);
  33.     PSmoveto (start + 36.0, 0.0);
  34.     PSrlineto (0.0, HALFINCH_MARK_LENGTH);
  35.     PSmoveto (start + 18.0, 0.0);
  36.     PSrlineto (0.0, QUARTERINCH_MARK_LENGTH);
  37.     PSmoveto (start + 54.0, 0.0);
  38.     PSrlineto (0.0, QUARTERINCH_MARK_LENGTH);
  39.     start += 72.0;
  40.     }
  41.  
  42.     PSsetlinewidth (0.0);
  43.     PSsetgray (NX_BLACK);
  44.     PSstroke();
  45.  
  46.     return self;
  47. }
  48.  
  49. @end
  50.